home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume2 / unix / shell211.doc < prev    next >
Internet Message Format  |  1988-10-25  |  23KB

  1. Path: xanth!nic.MR.NET!hal!cwjcc!mailrus!ulowell!page
  2. From: page@swan.ulowell.edu (Bob Page)
  3. Newsgroups: comp.sources.amiga
  4. Subject: v02i021:  shell - cshell-like command processor V2.11 (doc)
  5. Message-ID: <9829@swan.ulowell.edu>
  6. Date: 25 Oct 88 01:44:15 GMT
  7. Organization: University of Lowell, Computer Science Dept.
  8. Lines: 742
  9. Approved: page@swan.ulowell.edu
  10.  
  11. Submitted-by: dillon@cory.berkeley.edu (Matt Dillon)
  12. Posting-number: Volume 2, Issue 21
  13. Archive-name: unix/shell211.doc
  14.  
  15. # This is a shell archive.  Remove anything before this line
  16. # then unpack it by saving it in a file and typing "sh file"
  17. # (Files unpacked will be owned by you and have default permissions).
  18. # This archive contains the following files:
  19. #    shell.doc
  20. #
  21. if `test ! -s shell.doc`
  22. then
  23. echo "writing shell.doc"
  24. cat > shell.doc << '\Rogue\Monster\'
  25.  
  26. SHELL V2.11  (C)Copyright 1986-88, Matthew Dillon, All Rights Reserved.
  27. Freely distributable for non-profit only.
  28.  
  29.         old users: Please read the version history at the bottom of
  30.         this document for changes and additions.
  31.  
  32.  
  33.       (A)   Compiling
  34.       (B)   Overview
  35.       (C)   Quicky tech notes on implimentation.
  36.  
  37.       (D)   Command pre-processor
  38.       (E)   Command-list
  39.       (F)   special SET variables
  40.       (G)   Version history
  41.  
  42.        See also EXAMPLES.TXT
  43.  
  44.             NEW FEATURES THIS VER
  45.  
  46.     (Taken from the history below):  an IPC implementation, ENV: variable
  47.     support, many commands enhanced, some bugs fixed.
  48.  
  49.                 COMPILATION
  50.  
  51.  
  52.     The SHELL will compile only under AZTEC C and requires my
  53.     support library (SUP32.LIB) to link as well as a precompiled
  54.     symbol table of all AMIGA .H files.  A Makefile is included.
  55.     Note that the shell must be compiled using 32 bit integers (+L)
  56.     option and linked with SUP32.LIB and C32.LIB.  Additionaly, my
  57.     dres.library must be present in order to use the IPC facility.
  58.  
  59.     NOTE that converting the shell to use 16 bit integers does not
  60.     make it significantly smaller or faster.  Do not waste your time.
  61.  
  62.  
  63.  
  64.                  OVERVIEW
  65.  
  66.  
  67.     Matthew Dillon
  68.     891 Regal Rd.
  69.     Berkeley, California 94708
  70.     USA
  71.  
  72.     ..!ucbvax!dillon
  73.     dillon@ucbvax.Berkeley.EDU
  74.     dillon@cory.Berkeley.EDU
  75.  
  76.     This is not a shareware program.  My basic philosophy is to write
  77.     software for myself and distribute it if I think it will benefit
  78.     others (that is, unless I start going broke).  Contribute if you want
  79.     to.
  80.  
  81.     IT IS SUGGESTED THAT YOU USE CONMAN OR THE NEW 1.3 ENHANCED CONSOLE
  82.     DEVICE.  CONMAN does to my shell what Steve did in his Manxfied (old
  83.     term) 16 bit version of my shell, and more.  It isn't required, but
  84.     CONMAN (shareware) complements the functionality of the shell quite
  85.     well.
  86.  
  87.  
  88.    PROBLEMS
  89.  
  90.    -Make sure you give the SHELL a big enough stack, especially if you
  91.     intend on running shell scripts which source other scripts.  8192
  92.     is suggested.  Remember, STACK must be run BEFORE you run the shell.
  93.     Running it from the shell does not effect the shell's stack.
  94.  
  95.    -You should not redirect the RUN command. to redirect the command the
  96.     RUN command is running, embed a standard CLI redirection in the command
  97.     string:
  98.  
  99.     RUN ">file" command
  100.  
  101.    -Append '>>' does NOT work with BCPL programs.  It does work with all
  102.     internal and non-bcpl (read C) programs.
  103.  
  104.    OVERVIEW of the major features:
  105.  
  106.    -History mechanism (complements conman quite nicely, in fact)
  107.    -Redirection
  108.    -Piping (sort of)
  109.    -Command search path by name and by CLI path list
  110.    -Aliases
  111.    -Variables & variable handling (embedded variables), and enviroment variables
  112.    -Automatic file name expansion via '?' and '*'
  113.    -Conditionals
  114.    -Shell Scripts
  115.    -many built in commands to speed things up
  116.  
  117.  
  118.                 COMMAND PREPROCESSOR
  119.  
  120.  
  121.    preprocessing is done on the command line before it is passed on to
  122.    an internal or external routine:
  123.  
  124.    ^c        where c is a character is converted to that control character.
  125.         Thus, say '^l' for control-l.
  126.  
  127.    $name    where name is a variable name.  Variable names can consist of
  128.         0-9, a-z, A-Z, and underscore (_).  The contents of the
  129.         specified variable is used.  If the variable doesn't exist,
  130.         the specifier is used.  That is, if the variable 'i' contains
  131.         'charlie', then '$i' -> 'charlie'.  If the variable 'i' doesn't
  132.         exist, then '$i'->'$i' .
  133.  
  134.    ;        delimits commands.     echo charlie ; echo ben.
  135.  
  136.    ' '      (a space). Spaces delimit arguments.
  137.  
  138.    "string" a quoted string.  For instance, if you want to echo five spaces
  139.         and an 'a':
  140.  
  141.         echo      a       -> a
  142.         echo "    a"      ->      a
  143.  
  144.    \c        overide the meaning of special characters.    '\^a' is a
  145.         circumflex and an a rather than control-a.    To get a backslash,
  146.         you must say '\\'.
  147.  
  148.         also used to overide alias searching for commands.
  149.  
  150.    >file    specify output redirection.  All output from the command is
  151.         placed in the specified file.
  152.  
  153.    >>file   specify append redirection (Does not work with BCPL programs).
  154.  
  155.    <file    specify input redirection.    The command takes input from the
  156.         file rather than the keyboard (note: not all commands require
  157.         input).  It makes no sense to say  'echo <charlie' since
  158.         the 'echo' command only outputs its arguments.
  159.  
  160.    |        PIPE specifier.  The output from the command on the left becomes
  161.         the input to the command on the right.  The current SHELL
  162.         implimentation uses temporary files to store the data.
  163.  
  164.    !!        execute the previously executed command.
  165.    !nn        (nn is a number).  Insert the history command numbered n (see
  166.         the HISTORY command)
  167.    !partial search backwards through the history list for a command which
  168.         looks the same as 'partial', and execute it.
  169.  
  170.    #        Enter comment.  The rest of the line is discarded (note: \#
  171.         will, of course, overide the comment character's special
  172.         meaning)
  173.  
  174.    ^search^replace
  175.         a '^' at the beginning of the line indicates history
  176.         replacement.  The first occurance of 'search' in the previous
  177.         command is changed to 'replace', and the command executed.
  178.  
  179.  
  180.  
  181.                  SHELL COMMANDS
  182.  
  183.  
  184.    The first argument is the command-name... if it doesn't exist in the
  185.    list below and isn't an alias, it is assumed to be an external (disk)
  186.    command.
  187.  
  188.    AUTOMATIC SOURCING may be accomplished by naming shell scripts with a
  189.    .sh suffix.    Thus, if you say 'stuff' and the file 'stuff.sh' exists in
  190.    your current or C: directory, it will be SOURCED with any arguments you
  191.    have placed in the $_passed variable.
  192.  
  193.               EXCEPTION_PROCESSING
  194.  
  195.       if no _except variable exists, any command which fails causes the
  196.       rest of the line to abort as if an ABORTLINE had been executed.  If
  197.       the _except variable exists, it is of the form:
  198.  
  199.       "nnn;commands..."
  200.  
  201.       where nnn is some value representing the minimum return code required
  202.       to cause an error.  Whenever a command returns a code which is
  203.       larger or equal to nnn, the commands in _except are executed before
  204.       anything.  WHEN _except EXISTS, THE COMMAND LINE DOES NOT ABORT
  205.       AUTOMATICALLY.  Thus, if you want the current line being executed
  206.       to be aborted, the last command in _except should be an "abortline".
  207.  
  208.       exception handling is disabled while in the exception handling routine
  209.       (thus you can't get into any infinite loops this way).
  210.  
  211.       Thus if _except = ";", return codes are completely ignored.
  212.  
  213.       example:
  214.  
  215.       set _except "20;abortline"
  216.  
  217.  
  218.    ABORTLINE
  219.  
  220.       or just 'abort'.  Causes the rest of the line to be aborted. Used in
  221.       conjunction with exception handling.
  222.  
  223.       % echo a;abort;echo b
  224.       a
  225.  
  226.  
  227.    HELP
  228.  
  229.       simply displays all the available commands.  The commands are
  230.       displayed in search-order.  That is, if you give a partial name
  231.       the first command that matches that name in this list is the one
  232.       executed.  Generally, you should specify enough of a command so that
  233.       it is completely unique.
  234.  
  235.    QUIT
  236.    EXIT
  237.    RETURN [n]
  238.  
  239.       quit my SHELL (awww!).  End, El-Zappo, Kapow. Done, Finis.  If you
  240.       use RETURN and are on the top source level, the shell exits with the
  241.       optional return code.  (see RETURN below)
  242.  
  243.  
  244.    SET
  245.    SET name
  246.    SET name string
  247.  
  248.       The first method lists all current variable settings.
  249.       The second method lists the setting for that particular variable,
  250.       or creates the variable if it doesn't exist (to "")
  251.       The last method sets a variable to a string.
  252.  
  253.       see the section on special _ variables down below
  254.  
  255.  
  256.    UNSET name name name....
  257.  
  258.       unset one or more variables.  Deletes them entirely.
  259.  
  260.  
  261.    SETENV name string
  262.  
  263.       Create/Modify an enviroment variable.  The enviroment is maintained
  264.       in ENV:, with a separate file for each enviroment variable.  This
  265.       should be assigned to a directory somewhere.
  266.  
  267.    UNSETENV name name name....
  268.  
  269.       remove the specified variables from the enviroment list.    This
  270.       call DeleteFile()'s the enviroment variable from ENV:
  271.  
  272.    PRINTENV
  273.  
  274.       Print the contents of the enviroment directory ENV:
  275.  
  276.    ALIAS
  277.    ALIAS name
  278.    ALIAS name string
  279.  
  280.       same as SET, but applies to the alias list.  You can alias a single
  281.       name to a set of commands.  For instance:
  282.  
  283.       alias hi "echo a; echo b"
  284.  
  285.       then you can simply say 'hi'.  Aliases come in two forms the second
  286.       form allows you to place the arguments after an alias in a variable
  287.       for retrieval:
  288.  
  289.       alias xxx "%i echo this $i is a test"
  290.  
  291.       % xxx charlie
  292.       this charlie is a test
  293.  
  294.       The rest of the command line is placed in the specified variable
  295.       for the duration of the alias.  This is especially useful when used
  296.       in conjunction with the 'FOREACH' command.
  297.  
  298.  
  299.    UNALIAS name name name...
  300.  
  301.       delete aliases..
  302.  
  303.  
  304.    ECHO string
  305.    ECHO -n string
  306.  
  307.       echo the string to the screen.  If '-n' is specified, no newline is
  308.       output.
  309.  
  310.  
  311.    STRHEAD  varname breakchar string
  312.  
  313.       remove everything after and including the breakchar in 'string' and
  314.       place in variable 'varname':
  315.  
  316.      % strhead j . aaa.bbb
  317.      % echo $j
  318.      aaa
  319.      %
  320.  
  321.  
  322.    STRTAIL  varname breakchar string
  323.  
  324.       remove everything before and including the breakchar in 'string' and
  325.       place in variable 'varname':
  326.  
  327.      % strtail j . aaa.bbb
  328.      % echo $j
  329.      bbb
  330.      %
  331.  
  332.  
  333.    SOURCE file [arguments]
  334.  
  335.       execute commands from a file.  You can create SHELL programs in
  336.       a file and then execute them with this command.  Source'd files
  337.       have the added advantage that you can have loops in your command
  338.       files (see GOTO and LABEL).  You can pass SOURCE files arguments
  339.       by specifying arguments after the file name.  Arguments are passed
  340.       via the _passed variable (as a single string).
  341.  
  342.       Automatic 'sourcing' is accomplished by placing a .sh extension on
  343.       the file and executing it as you would a C program:
  344.  
  345.       --------- file hello.sh ---------
  346.       foreach i ( $_passed ) "echo yo $i"
  347.       ---------------------------------
  348.       % hello a b c
  349.       yo a
  350.       yo b
  351.       yo c
  352.  
  353.       NOTE: The hash '#' as the FIRST character on the line is a comment
  354.         within script files.
  355.  
  356.    MV from to
  357.    MV from from from ... from todir
  358.  
  359.       Allows you to rename a file or move it around within a disk.  Allows
  360.       you to move 1 or more files into a single directory.  (if todir == '/',
  361.       the items are moved to the parent directory).
  362.  
  363.    CD
  364.    CD ..
  365.    CD path
  366.  
  367.       Change your current working directory.  You may specify '..' to go
  368.       back one directory (this is a CD specific feature, and does not
  369.       work with normal path specifications).  Note that CD / also goes
  370.       back one directory.
  371.  
  372.       CD without any arguments displays the path of the directory you
  373.       are currently in.
  374.  
  375.  
  376.    PWD
  377.       rebuild _cwd by backtracing from your current directory.    The $_cwd
  378.       variable can get confused by Assign'd labels.
  379.  
  380.    RM [-r] file file file...
  381.  
  382.       DeleteFile().  Remove the specified files.  Remove always returns
  383.       errorcode 0.  You can remove empty directories.  The '-r' option
  384.       will remove non-empty directories by recursively removing all sub
  385.       directories.
  386.  
  387.    CP file    (to current directory)
  388.    CP [-r] dir    (to current directory)
  389.    CP file file
  390.    CP file1 file2...fileN dir
  391.    CP [-r] dir1 dir2...dirN dir
  392.  
  393.       copy files or directories.  when copying directories, the "-r" option
  394.       must be specified to copy subdirectories as well.  Otherwise, only
  395.       top level files in the source directory are copied.
  396.  
  397.  
  398.    MKDIR name name name...
  399.  
  400.       create the following directories.
  401.  
  402.  
  403.    HISTORY [partial_string]
  404.  
  405.       Displays the enumerated history list.  The size of the list is
  406.       controlled by the _history variable.  If you specify a partial-
  407.       string, only those entries matching that string are displayed.
  408.  
  409.  
  410.    MEM
  411.  
  412.       Display current memory statistics for CHIP and FAST memory.
  413.  
  414.  
  415.    CAT [file file....]
  416.  
  417.       Type the specified files onto the screen.  If no file is specified,
  418.       STDIN in used.  CAT is meant to output text files only.  You cannot
  419.       use CAT to join binaries together.
  420.  
  421.    DIR [-s] [path path ... ]
  422.  
  423.       Get a directory listing of the current directory or specified
  424.       directories.  The -s option causes DIR to display a short-form
  425.       listing.
  426.  
  427.    DEVINFO [device: device:... ]
  428.  
  429.       Display Device statistics for the current device (CD base), or
  430.       specified devices.
  431.  
  432.  
  433.    FOREACH varname ( strings ) command
  434.  
  435.       'strings' is broken up into arguments.  Each argument is placed in
  436.       the variable 'varname' in turn and 'command' executed.  To execute
  437.       multiple commands, place them in quotes:
  438.  
  439.       % foreach i ( a b c d ) "echo -n $i;echo \" ha\""
  440.       a ha
  441.       b ha
  442.       c ha
  443.       d ha
  444.  
  445.       Foreach is especially useful when interpreting passed arguments in
  446.       an alias or source file.
  447.  
  448.       NOTE: a GOTO inside a FOREACH will have an indeterminate effect.
  449.  
  450.  
  451.    FOREVER command
  452.    FOREVER "command;command;command..."
  453.  
  454.       The specified commands are executed over and over again forever.
  455.  
  456.       -Execution stops if you hit ^C
  457.       -If the commands return with an error code.
  458.  
  459.       NOTE: a GOTO inside will have an indeterminate effect.
  460.  
  461.  
  462.    RETURN [value]
  463.  
  464.       return from a source file.  The rest of the source file is
  465.       discarded.  If given, the value becomes the return value for the
  466.       SOURCE command.  If you are on the top level, this value is returned
  467.       as the exit code for the shell.
  468.  
  469.  
  470.    IF -f path
  471.    IF argument conditional argument ;
  472.    IF argument
  473.  
  474.       If a single argument is something to another argument.  Conditional
  475.       clauses allowed:
  476.  
  477.       <, >, =, and combinations (wire or).  Thus <> is not-equal, >=
  478.       larger or equal, etc...
  479.  
  480.       If the left argument is numeric, both arguments are treated as
  481.       numeric.
  482.  
  483.       usually the argument is either a constant or a variable ($varname).
  484.  
  485.       The third form if IF is conditional on the existance of the argument.
  486.       If the argument is a "" string, then FALSE , else TRUE.
  487.  
  488.       The first form is TRUE if the path can be openned with modes 1005.
  489.  
  490.  
  491.    ELSE ;
  492.  
  493.       else clause.
  494.  
  495.  
  496.    ENDIF ;
  497.  
  498.       the end of an if statement.
  499.  
  500.  
  501.    LABEL name
  502.  
  503.       create a program label right here.  You can only have labels within
  504.       a source file.
  505.  
  506.  
  507.    GOTO label
  508.  
  509.       goto the specified label name.  You can only use this command from a
  510.       source file.
  511.  
  512.  
  513.    DEC var
  514.    INC var
  515.  
  516.       decrement or increment the numerical equivalent of the variable and
  517.       place the ascii-string result back into that variable.
  518.  
  519.  
  520.    INPUT varname
  521.  
  522.       input from STDIN (or a redirection, or a pipe) to a variable.  The
  523.       next input line is placed in the variable.
  524.  
  525.  
  526.    VER
  527.  
  528.       display my name, the version number, and the version date.
  529.  
  530.    IPC appname[.project] command
  531.  
  532.       Send an IPC command to the .CMD IPC domain for the specified
  533.       application.  An optional project name within that application
  534.       may be supplied.    The text command is sent to the application.
  535.  
  536.       Only applications that support the DRES.LIBRARY IPC interface
  537.       can communicate via this command.  DRES.LIBRARY must exist for
  538.       this command to work.  Examples:
  539.  
  540.       forever "ipc dmouse mouse;ipc dmouse nomouse"     (DMouse V1.11 and beyond)
  541.  
  542.       Currently, the shell cannot receive IPC commands.
  543.  
  544.    SLEEP timeout
  545.  
  546.       Sleep for 'timeout' seconds.
  547.  
  548.  
  549.  
  550.               SPECIAL VARIABLES
  551.  
  552.  
  553.    _prompt
  554.      This variable is set to the command you wish executed that will
  555.      create your prompt.
  556.  
  557.    _history
  558.      This variable is set to a numerical value, and specifies how far
  559.      back your history should extend.
  560.  
  561.    _histnum
  562.      This variable contains the history # of the next command that
  563.      will be executed.
  564.  
  565.    _debug
  566.      Debug mode... use it if you dare.  must be set to some value
  567.  
  568.    _verbose
  569.      Verbose mode (for source files).  display commands as they are
  570.      executed.
  571.  
  572.    _maxerr
  573.      The worst (highest) return value to date.  To use this, you usually
  574.      set it to '0', then do some set of commands, then check it.
  575.  
  576.    _lasterr
  577.      Return code of last command executed.    This includes internal
  578.      commands as well as external comands, so to use this variables
  579.      you must check it IMMEDIATELY after the command in question.
  580.  
  581.    _cwd
  582.      Holds a string representing the current directory we are in from
  583.      root.    The SHELL can get confused as to its current directory if
  584.      some external program changes the directory.  Use PWD to rebuild
  585.      the _cwd variable in these cases.
  586.  
  587.    _passed
  588.      This variable contains the passed arguments when you SOURCE a file
  589.      or execute a .sh file.  For instance:
  590.  
  591.      test a b c d
  592.  
  593.      -------- file test.sh ----------
  594.      echo $_passed
  595.      foreach i ( $_passed ) "echo YO $i"
  596.      --------------------------------
  597.  
  598.  
  599.    _path
  600.      This variable contains the search path when the shell is looking
  601.      for external commands.  The format is:  DIR,DIR,DIR  Each DIR must
  602.      have a trailing ':' or '/'.  The current directory is always
  603.      searched first.  The entire path will be searched first for the
  604.      <command>, then for <command>.sh (automatic shell script sourcing).
  605.  
  606.      The default _path is set to  "c:,ram:,ram:c/,df1:c/,df0:c/"
  607.  
  608.      NOTE:    The CLI path is also searched.
  609.  
  610.     _ignoreeof
  611.      If this variable exists, EOF is ignored on interactive
  612.      terminals.  This prevents accidental logouts.
  613.  
  614.     _copysilent
  615.      If this variable exists, the CP command will be silent.  The
  616.      default is now for CP to be verbose.
  617.  
  618.     _copydate
  619.     If this variables exists, the CP command will attempt to
  620.     transfer the datestamp src->dst file/dir.  For directories,
  621.     only those that CP must create will get the old datestamp
  622.     transfered to them.  Additionaly, the COMMENT, if any, will
  623.     the transfered src->dst file/dir.
  624.  
  625.  
  626.  
  627.                 TECH NOTES
  628.  
  629.  
  630.  
  631.    PIPES have been implimented using temporary RAM: files.  Thus, you
  632.    should be careful when specifying a 'ram:*' expansion as it might
  633.    include the temp. files.  These files are deleted on completion of
  634.    the pipe segment.
  635.  
  636.    The file names used are completely unique, even with multiple shells
  637.    running simultaniously.
  638.  
  639.    My favorite new feature is the fact that you can now redirect to and
  640.    from, and pipe internal commands.  'echo charlie >ram:x', for
  641.    instance.  Another favorite:
  642.  
  643.       echo "echo mem | shell" | shell
  644.  
  645.    To accomplish these new features, I completely re-wrote the command
  646.    parser in execom.c
  647.  
  648.    The BCPL 'RUN' command should not be redirected.. .strange things
  649.    happen.  You can use redirection WITHIN the RUN's command line, of
  650.    course, but it should be quoted so the shell doesn't think the
  651.    redirection is for it.
  652.  
  653.    NO BCPL program should be output-append redirected (>>).
  654.  
  655.  
  656.  
  657.                  VERSION HISTORY
  658.  
  659.     V2.11:
  660.     -IPC command added (requires dres.library to work).  All new
  661.      versions of my programs will support this IPC interface.
  662.  
  663.     V2.10:
  664.     -Command dispatch has been fixed... RUN used to create problems
  665.      sometimes (would give you a CLI prompt when it should not have).
  666.  
  667.     -MV fixed ... had problems when moving things to the current
  668.      directory ("") and names starting with '/'.
  669.  
  670.     -SETENV, PRINTENV commands added.  $var variables search the
  671.      enviroment (ENV:).  Aliases are searched for in ENV: as well
  672.      now.
  673.  
  674.      This allows you to have global variables and aliases for all
  675.      the shells running in the system without having to re-source an
  676.      initialization file.  Additionaly, to the limits of the command
  677.      line, the contents of any file in ENV: may be inserted by
  678.      referencing it as a variable.
  679.  
  680.      ANY system variable may be placed in the enviroment instead of
  681.      the local variables if you wish.
  682.  
  683.     -DIR enhanced.    Defaults to long list format.
  684.  
  685.     V2.08:
  686.  
  687.     -WaitForChar() removed from main processing loop (the old Delay(0)
  688.      bug though in this case it is WaitForChar(x,1).
  689.  
  690.     -CP now accepts single parameters (ala MSDOS).. copy a file or
  691.      directory to the current directory (-r for recursive sub-dirs)
  692.         CP FILE
  693.         CP [-r] DIR
  694.  
  695.     -A new variable, _copydate, which, if it exits, causes CP to
  696.      transfer both the comment and datestamp of the source to the
  697.      destination.
  698.  
  699.         set _copydate
  700.  
  701.     V2.07:  (Internal)
  702.  
  703.     V2.06B:
  704.     -External programs that change the current directory are caught,
  705.      and no longer crash the machine.
  706.  
  707.     -CP command, the _copysilent variable, if it exists, causes
  708.      directory and recursive copies to do their work in silence.
  709.  
  710.     V2.06:
  711.     -IF enhanced.  -f option added.  (if -f path).  If the named path
  712.      can be openned with modes 1005, then...
  713.  
  714.     -various routines fixed.
  715.  
  716.     V2.04:
  717.     - CP command now internal... see instructions.
  718.     - RM command now has '-r' option.
  719.     - \command forces the command parser NOT to look at aliases.  Thus,
  720.        you can alias something like 'cd' and have the alias contain a 'cd'
  721.        which references the internal cd:
  722.  
  723.        alias cd "stuff...;\\cd $x"
  724.  
  725.     - "-c" command line option to execute commands and return.
  726.  
  727.        shell -c "echo a;echo b;echo c".
  728.  
  729.     - _path default now places RAM: and RAM:C first rather than last.
  730.     - _histnum variable .. current history #
  731.     - expanded filenames are sorted.
  732.     - ^search^replace (modify previous command).
  733.  
  734.     V2.03 AND BELOW
  735.  
  736.     Before Written History (actually not quite, but there was this
  737.     fire you see....)
  738.  
  739. \Rogue\Monster\
  740. else
  741.   echo "will not over write shell.doc"
  742. fi
  743. if [ `wc -c shell.doc | awk '{printf $1}'` -ne 21457 ]
  744. then
  745. echo `wc -c shell.doc | awk '{print "Got " $1 ", Expected " 21457}'`
  746. fi
  747. echo "Finished archive 1 of 1"
  748. # if you want to concatenate archives, remove anything after this line
  749. exit
  750. -- 
  751. Bob Page, U of Lowell CS Dept.  page@swan.ulowell.edu  ulowell!page
  752. Have five nice days.
  753.